// 插件设置接口
export interface DocumentShareSettings {
  apiUrl: string; // API 基础地址，例如 https://your-domain.com/api
  apiToken: string;
  defaultTheme: 'github' | 'dark' | 'minimal' | 'notion' | 'obsidian';
  defaultVisibility: 'public' | 'private';
  defaultPassword: string;
  // 文档自动更新（监听文件变化，同步到服务器）
  enableAutoUpdate: boolean;
  autoUpdateDelay: number;
  // 插件自更新（检查并下载新版本插件文件）
  enablePluginUpdateCheck?: boolean;
  pluginUpdateUrl?: string;
}

// 默认设置
export const DEFAULT_SETTINGS: DocumentShareSettings = {
  apiUrl: '',
  apiToken: '',
  defaultTheme: 'github',
  defaultVisibility: 'public',
  defaultPassword: '',
  enableAutoUpdate: false,
  autoUpdateDelay: 3000,
  enablePluginUpdateCheck: false,
  pluginUpdateUrl: '',
};

// 单个账号的文档记录
export interface AccountDocumentRecord {
  uuid: string; // 文档 UUID
  tokenHash: string; // API Token 的哈希值（用于识别账号）
  author?: string; // 作者名称（可选）
  uploadedAt: string; // 上传时间
}

// 文件路径到文档记录的映射（支持多账号）
export interface DocumentMapping {
  [filePath: string]: AccountDocumentRecord[]; // filePath -> 多个账号的文档记录
}

// 文档接口（API 返回）
export interface Document {
  uuid: string;
  title: string;
  url: string;
  is_public: boolean;
  password?: string | null;
  theme: string;
  views: number;
  author: string; // 文档作者账号
  expires_at: string | null;
  is_expired: boolean;
  created_at: string;
  updated_at: string;
  path?: string; // 文件在 Obsidian 中的完整路径
}

// API 响应接口
export interface ApiResponse<T = any> {
  success: boolean;
  message?: string;
  data?: T;
  error?: string;
  errors?: Record<string, string[]>;
}

// 上传文档请求
export interface UploadDocumentRequest {
  title: string;
  content: string;
  is_public: boolean;
  password?: string;
  theme: string;
  expires_at?: string; // 过期时间（ISO 8601 格式）
  path?: string; // 文件在 Obsidian 中的完整路径
}

// 更新文档请求
export interface UpdateDocumentRequest {
  title?: string;
  content?: string;
  is_public?: boolean;
  password?: string;
  theme?: string;
  expires_at?: string; // 过期时间（ISO 8601 格式）
  path?: string; // 文件在 Obsidian 中的完整路径（例如重命名/移动后）
}

